/**
  * Author: Mei
  * Date: 2020-11-22 14:39
  * Description: 
  *
  */
#include <iostream>
#include <thread>
#include <string>
#include <unistd.h>

using namespace std;

void f2(int& i){
    cout << "f2:" << i << endl;
}
void f1(int& i){
    cout << "f1:" << i << endl;
    int j = 11;
    thread t(f2, ref(j));//-------------->②
    t.detach();
}
/**
 * 打印出【f1：10】的原因可能是，①处分离线程后，main函数所在的线程还没有结束，所以i还没有被释放掉，所以能打印出10；还有可能是main函数所在的线程虽然已经结束了，但是巧合的是值还是10。
打印出【f2：0】的原因是，②处分离线程后，线程f1已经结束了，所以函数f1里的j已经被释放了，这时线程f2再访问j的时候就是0了。
 *
 *
 * @return
 */
int main(){
    int i = 10;
    thread t(f1, ref(i));
    t.detach();//-------------->①
    cout << "aaa" << endl;
    pthread_exit(NULL);
}